class Watcher{
    constructor(vm,key,cb){
        this.vm = vm
        //data中的属性名称
        this.key = key 
        //回调函数负责更新视图
        this.cb = cb 

        //把watcher对象记录到Dep类的静态属性target
        Dep.target = this 
        //触发get方法 在get方法中会调用addSub

        this.oldValue = vm[key]
        //防止重复添加
        Dep.target = null
    }
    //当数据发生变化的时候更新视图
    update(){
     
        let newValue = this.vm[this.key]
        if(this.oldValue === this.vm[this.key]){
            return
        }
        this.cb(newValue)
        //更新视图的时候是要调用Update方法
        //而update方法是通过cb这个回调函数来更新视图的
        // 而cb函数是在Watcher这个构造函数中传递的
        //所以，我们在创建Watcher对象中需要传递一个cb函数
    }

}